home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / disk / misc / MacTransfEr.lha / MacTransfEr / MacTransfEr.e < prev    next >
Text File  |  1997-09-18  |  3KB  |  96 lines

  1. /* MacTransfEr - Kleines Tool, um die Dateinamen mit Hilfe der Information aus FINDER.DAT (dazu muß die Diskette
  2. natürlich auf einem Mac beschrieben worden sein) wieder zu vervollständigen. Gibbet glaube ich noch gar nicht, eine
  3. echte Premiere :)
  4. Written in E³
  5. r@((e 97
  6.  
  7. FINDER.DAT-Offsets:
  8.  
  9. 276 - 1. Datei
  10. 80 - Abstand Mac-Dateiname -> MS-DOS-Dateiname
  11. 92/144 - Abstand der Dateinamen
  12.  
  13. */
  14.  
  15. OPT OSVERSION=37
  16.  
  17. MODULE 'dos/dos','reqtools','libraries/reqtools'
  18.  
  19. ENUM CD=0,DF
  20.  
  21. DEF ver,filereq:PTR TO rtfilerequester,filename[108]:STRING,lock=0,oldlock,
  22. fh,fib:PTR TO fileinfoblock,finder:PTR TO CHAR,finder2,macfilename[256]:STRING,msdooffilename[12]:STRING,
  23. test,foundpos,counter1=0,counter2=0,rdargs,clargs[2]:ARRAY OF LONG,cd,df
  24.  
  25. PROC main()
  26.     ver:='$VER: MacTransfEr 1.0 (18.9.97) by r@((e'
  27.  
  28.     filereq:=0
  29.     reqtoolsbase:=0
  30.     fh:=0
  31.  
  32.     clargs:=[NIL,NIL]
  33.  
  34.     WriteF('\s\n',ver+6)
  35.     IF (rdargs:=ReadArgs('CD=CURRENTDIR/S,DF=DELETEFINDERDAT/S',clargs,NIL))
  36.         cd:=clargs[CD]
  37.         df:=clargs[DF]
  38.         FreeArgs(rdargs)
  39.     ENDIF
  40.     IF cd THEN BRA noreq
  41.     IF reqtoolsbase:=OpenLibrary('reqtools.library',38)
  42.         NEW filereq
  43.         IF filereq:=RtAllocRequestA(RT_FILEREQ,NIL)
  44.             IF RtFileRequestA(filereq,filename,'Please choose a directory',[RTFI_FLAGS,FREQF_NOFILES,0])
  45.                 IF (lock:=Lock(filereq.dir,ACCESS_READ))
  46.                     oldlock:=CurrentDir(lock)
  47. noreq:
  48.                     WriteF('\nMacTransfEr log:\n\n')
  49.                     IF (fh:=Open('FINDER.DAT',MODE_OLDFILE))
  50.                         NEW fib
  51.                         IF ExamineFH(fh,fib)
  52.                             NEW finder[fib.size]
  53.                             IF (fib.size=Read(fh,finder,fib.size))
  54.                                 finder2:=finder+276
  55.                                 REPEAT
  56.                                     StrCopy(macfilename,finder2+1,Char(finder2))
  57.                                     StrCopy(msdooffilename,finder2+80,8)
  58.                                     IF (foundpos:=InStr(msdooffilename,' ',0))<>-1 THEN    SetStr(msdooffilename,foundpos)
  59.                                     IF (Char(finder2+8))<>0
  60.                                         StrAdd(msdooffilename,'.',1)
  61.                                         StrAdd(msdooffilename,finder2+88,3)
  62.                                         IF (foundpos:=InStr(msdooffilename,' ',8))<>-1 THEN    SetStr(msdooffilename,foundpos)
  63.                                     ENDIF
  64.                                     IF Rename(msdooffilename,macfilename)
  65.                                         counter1++
  66.                                         WriteF('\s -> \s\n',msdooffilename,macfilename)
  67.                                     ELSE
  68.                                         WriteF('** Could not rename \s to \s **\n',msdooffilename,macfilename)
  69.                                     ENDIF
  70.                                     counter2++
  71.                                     test:=(finder2-finder)-$70
  72.                                     IF Odd(test/$100) AND (Mod(test,$100) = 0)
  73.                                         finder2:=finder2+144
  74.                                     ELSE
  75.                                         finder2:=finder2+92
  76.                                     ENDIF
  77.                                 UNTIL finder2 >= (finder+fib.size)
  78.                                 WriteF('\nRenamed \d of \d files in FINDER.DAT.\n',counter1,counter2)
  79.                             ENDIF
  80.                         ENDIF
  81.                         Close(fh)
  82.                         IF df THEN IF DeleteFile('FINDER.DAT') THEN WriteF('\nDeleted FINDER.DAT.\n') ELSE WriteF('\n** Could not delete FINDER.DAT **\n')
  83.                     ENDIF
  84.                     IF fh = 0 THEN WriteF('** Could not open FINDER.DAT for reading **\n')
  85.                     IF lock
  86.                         CurrentDir(oldlock)
  87.                         UnLock(lock)
  88.                     ENDIF
  89.                 ENDIF
  90.             ENDIF
  91.             IF filereq THEN RtFreeRequest(filereq)
  92.         ENDIF
  93.         IF reqtoolsbase THEN CloseLibrary(reqtoolsbase)
  94.     ENDIF
  95. ENDPROC
  96.